<?php
/**
 * Laconica, the distributed open-source microblogging tool
 *
 * Settings for Twitter integration
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Settings
 * @package   Laconica
 * @author    Evan Prodromou <evan@controlyourself.ca>
 * @copyright 2008-2009 Control Yourself, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://laconi.ca/
 */

if (!defined('LACONICA')) {
    exit(1);
}


/**
 * Settings for Twitter integration
 *
 * @category Settings
 * @package  Laconica
 * @author   Evan Prodromou <evan@controlyourself.ca>
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://laconi.ca/
 *
 * @see      SettingsAction
 */

class RsssettingsAction extends ConnectSettingsAction
{
    /**
     * Title of the page
     *
     * @return string Title of the page
     */

    function title()
    {
        return _('Cập nhật tin nhắn từ các nguồn RSS');
    }

    /**
     * Instructions for use
     *
     * @return instructions for use
     */

    function getInstructions()
    {
        return _('Nhập các đường dẫn các nguồn tin RSS bạn muốn tự động đăng lên Tôi24h. Bạn chưa biết RSS là gì? Bạn có thể xem <a href="../doc/rss">tại đây</a>  ');
    }

    /**
     * Content area of the page
     *
     * Shows a form for associating a Twitter account with this
     * Laconica account. Also lets the user set preferences.
     *
     * @return void
     */

    function showContent()
    {
        $user = common_current_user();

        $profile = $user->getProfile();
        $u_rss = null;
        $u_rss = User_rss::getByUserID($user->id); // 1 == Twitter
        $this->elementStart('form', array('method' => 'post',
                                          'id' => 'form_settings_rss',
                                          'class' => 'form_settings',
                                          'action' =>
                                          common_local_url('rsssettings')));
        $this->elementStart('fieldset', array('id' => 'settings_rss_account'));
        $this->element('legend', null, _('Cập nhật địa chỉ RSS'));
        $this->hidden('token', common_session_token());
        $total = 0;
        if ($u_rss) {
            $total=1;
            $this->elementStart('ul', 'form_data');
            while($u_rss->fetch())
            {
                $this->elementStart('li', array('id' => 'settings_rss_remove'));
                $this->hidden('r_field_'.$total, $u_rss->id);
                $this->element('a', array('href' => $u_rss->rss_url), $u_rss->rss_url);
                $this->submit('remove_'.$total, _('Remove'));
                $this->elementEnd('li');
                $total++;
            }
            $this->elementEnd('ul');
        } 
        if($total-1<3)
        {
            $this->elementStart('ul', 'form_data');
            $this->elementStart('li', array('id' => 'settings_rss_field_new'));
            $this->input('rss_field_new', _('Nguồn Tin RSS'),
                             ($this->arg('rss_field_new')) ?
                             $this->arg('rss_field_new') :
                             null);
            $this->elementEnd('li'); 
            $this->elementEnd('ul');
            $this->submit('save', _('Save'));
        }
        $this->elementEnd('fieldset');
        $this->elementEnd('form');
    }
    
/*    function printAllForm($i=0)
    {
        if($i>0)
        {
            $t=3-$i+1;
            $k=1;
            while($i>0)
            {      
            $this->elementStart('li', array('id' => 'settings_rss_field_'.$t));
            $this->input('rss_field_'.$k, _('Nguồn Tin '.$t),
                         ($this->arg('rss_field_'.$k)) ?
                         $this->arg('rss_field_'.$k) :
                         null);
            $this->elementEnd('li');  
            $t++;
            $k++;
            $i--; 
            }
        }
    
    }*/

   

    /**
     * Handle posts to this form
     *
     * Based on the button that was pressed, muxes out to other functions
     * to do the actual task requested.
     *
     * All sub-functions reload the form with a message -- success or failure.
     *
     * @return void
     */

    function handlePost()
    {

        // CSRF protection
        $token = $this->trimmed('token');
        if (!$token || $token != common_session_token()) {
            $this->showForm(_('There was a problem with your session token. '.
                              'Try again, please.'));
            return;
        }
        if ($this->arg('save')) {
            $this->savePreferences();
        } else if ($this->arg('remove_1')) {
            $this->removeRSS(1);
        }  else if ($this->arg('remove_2')) {
            $this->removeRSS(2);
        } else if ($this->arg('remove_3')) {
            $this->removeRSS(3);
        }
         else {
            $this->showForm(_('Unexpected form submission.'));
        }
    }

 

    /**
     * Disassociate an existing Twitter account from this account
     *
     * @return void
     */

    function removeRSS($i)
    {
        $user = common_current_user();
        $u_rss = User_rss::staticGet('id',$this->trimmed('r_field_'.$i));
        if($u_rss->user_id!=$user->id)
        {
                $this->showForm(_('Bạn không được quyền xoá nguồn tin này.'));
                return;
        }
        else
        {
            $result = $u_rss->delete();
            if (!$result) {
            common_log_db_error($u_rss, 'DELETE', __FILE__);
            $this->serverError(_('Không xoá được nguồn tin RSS này.'));
            return;
            }
        }
        $this->showForm(_('Nguồn tin RSS đã xoá thành công.'), true);

    }


    /**
     * Save user's Twitter-bridging preferences
     *
     * @return void
     */

    function savePreferences()
    {
        $value = $this->trimmed('rss_field_new');
        $user = common_current_user();
        //Cần xử lý việc duplicate URL khi nhập - here
        if (!is_null($value) && (strlen($value) > 0) && !Validate::uri($value, array('allowed_schemes' => array('http', 'https')))) 
            {
                $this->showForm(_('Địa chỉ nguồn tin RSS không đúng.'));
                return;
            }
            if(User_rss::checkExists($user->id,$value))
            {
                $this->showForm(_('Một trong số những nguồn tin RSS bạn nhập đã có. Bạn hãy nhập lại nguồn tin khác'));
                return;
            }
            if(!is_null($value) && (strlen($value) > 0))
            {
                $rss_insert = new User_rss();
                $rss_insert->user_id = $user->id;
                $rss_insert->rss_url = $value;
                $result =$rss_insert->insert();
                if ($result === false) {
                    common_log_db_error($rss_insert, 'INSERT', __FILE__);
                    $this->serverError(_('Couldn\'t insert User RSS.'));
                    $this->showForm(_('Có Lỗi khi cập nhật địa chỉ RSS'));
                    return;
                }
            }

        $this->showForm(_('Cập nhật thành công. Các nguồn tin RSS đã được lưu và sẽ được tự động đăng lên Tôi24h với tài khoản của bạn.'), true);
    }
    



}
